﻿using System;
using System.Data.Entity;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TCM.DbContextt;
using TCM.Models;
using System.Text.RegularExpressions;
using System.Linq;
using System.Data.SqlClient;
namespace TCM.Forms
{
    public partial class AddCasesToPlans : Form
    {
        BaseContext db;
        List<Guid> cases = new List<Guid>();
        Guid plan;

        public AddCasesToPlans()
        {
            InitializeComponent();
            db = new BaseContext();
            db.Cases.Load();
            db.Categories.Load();
            db.TestPlans.Load();
            db.CasesToPlanses.Load();
            LoadData();

        }

        private void LoadData()
        {
            dataGridView2.DataSource = db.TestPlans.Local.ToBindingList();
            dataGridView1.DataSource = db.Cases.Local.ToBindingList();
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            var data = db.TestPlans.Where(x => x.Name.Contains(textBox2.Text));
            dataGridView2.DataSource = data.ToList();
            updateCount();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            var data = db.Cases.Where(x => x.Name.Contains(textBox1.Text));
            dataGridView1.DataSource = data.ToList();
            updateCount();
        }

        private void button1_Click(object sender, EventArgs e)
        {   //смотрим каждую строчку в планах
            cases.Clear();
            for (int i = 0; i < dataGridView2.Rows.Count; i++)
            {   //проверка на ненуль
                if (dataGridView2.Rows[i].Cells[1].Value != null)
                {   //если не нуль, то смотрим отмечена ли строчка
                    if ((bool)dataGridView2.Rows[i].Cells[1].Value)
                    {   //если отмечена, то сохраняем ГУИД записи
                        plan = ((Guid)dataGridView2.Rows[i].Cells[0].Value);
                        //идем по строкам кейсов, ищем отмеченные
                        for (int j = 0; j < dataGridView1.Rows.Count; j++)
                        {
                            //проверяем на нуль
                            if (dataGridView1.Rows[j].Cells[1].Value == null) continue;
                            //если отмечена строка, то записываем в массив
                            if ((bool)dataGridView1.Rows[j].Cells[1].Value)
                                cases.Add((Guid)dataGridView1.Rows[j].Cells[0].Value);
                        }
                        //забиваем в базу гуиды
                        foreach (var t in cases)
                        {
                            CasesToPlans ctp = new CasesToPlans();
                            ctp.CasesToPlansId = Guid.NewGuid();
                            ctp.CaseId = t;
                            ctp.TestPlanId = plan;
                            db.CasesToPlanses.Add(ctp);
                            db.SaveChanges();
                        }
                        MessageBox.Show("Связка тест плана " + dataGridView2.Rows[i].Cells[2].Value + " прошла успешно");
                        LoadData();
                        updateCount();
                    }
                }
                
            }
        }

            private void updateCount()
            {
                for(int i = 0; i<dataGridView2.Rows.Count; i++)
                {
                    Guid ss = (Guid)dataGridView2.Rows[i].Cells[0].Value;
                    dataGridView2.Rows[i].Cells[3].Value = db.CasesToPlanses.Where(x => x.TestPlanId == ss).Count();
                }
            }

            private void AddCasesToPlans_Load(object sender, EventArgs e)
            {
                updateCount();
            }
            
            


        }

  
        
    
    
    
    }

